app.directive("personalinformations", ['$rootScope', 'userServices', function($rootScope, userServices){
    return {
        restrict: 'EA',
		templateUrl: "app/shared/directives/personalinformations/personalinformations.view.html",
        link: function(scope, element, attrs){
     			
			/**
			* Set avatar on user
			*/
			scope.setAvatarCommand = function(file) {
				console.info("setAvatarCommand called");
				scope.Avatar = file;
				scope.attachAvatarToUserCommand(file);
			};

			/**
			* Attach a avatar on an user
			*/
			scope.attachAvatarToUserCommand = function(file) {
				try {

					if(scope.personalUserId == '' || scope.personalUserId == undefined) {
						throw "Un utilisateur doit être sélectionné";
					}
					
					scope.canUpdateUser = false;
					userServices.attachAvatar (function (data) {
						console.debug('userServices attach avatar received');
						if(data.isFailed) {
							toastr.warning(data.exception, "Gestionnaire des utilisateurs");
						}
						else {
							toastr.success("L'avatar a été associé à l'utilisateur", "Gestionnaire des utilisateurs");
							
							//update current edit user
							userServices.getUser (function (data) {
								if(data.isFailed) {
									toastr.warning(data.exception, "Gestionnaire des utilisateurs");
								}
								else {
									$rootScope.currentUser = data.response;
									scope.setPersonalInformationsCommand();
									toastr.info("L'utilisateur a été mis à jour", "Gestionnaire des utilisateurs");
								}
							}, scope.personalUserId);
						}
						scope.canUpdateUser = true;
					}, scope.personalUserId, file);
				}
				catch(exception) {
					toastr.error(exception, "Gestionnaire des utilisateurs");
				}
			};
        }
    };
}]);